"""
《邢不行-2024新版|Python股票量化投资课程》
author: 邢不行
微信: xbx9585

财务数据选股专属代码

数据整理需要计算的因子脚本，可以在这里修改/添加别的因子计算
"""


# !!!

def cal_tech_factor(df, extra_agg_dict):
    """
    计算量价因子
    :param df:
    :param extra_agg_dict:
    :return:
    """
    # =计算均价
    df['VWAP'] = df['成交额'] / df['成交量']
    # =计算换手率
    df['换手率'] = df['成交额'] / df['流通市值']
    # =计算5日均线
    df['5日均线'] = df['收盘价_复权'].rolling(5).mean()
    # =计算bias
    df['bias'] = df['收盘价_复权'] / df['5日均线'] - 1
    # =计算5日累计涨跌幅
    df['5日累计涨跌幅'] = df['前收盘价'].pct_change(5)
    extra_agg_dict['VWAP'] = 'last'
    extra_agg_dict['换手率'] = 'sum'
    extra_agg_dict['5日均线'] = 'last'
    extra_agg_dict['bias'] = 'last'
    extra_agg_dict['5日累计涨跌幅'] = 'last'
    return df

def calc_fin_factor(df, extra_agg_dict):
    """
    计算财务因子
    :param df:              原始数据
    :param extra_agg_dict:  resample需要用到的
    :return:
    """
    # df['利润率'] = df['R_total_profit_ttm'] / df['B_total_assets@xbx']
    # df['流动比率'] = df['B_total_current_assets@xbx'] / df['B_total_current_liab@xbx']
    df['ROE'] = df['R_np@xbx'] / df['B_total_owner_equity@xbx']
    df['负债率'] = df['B_total_liab@xbx'] / df['B_total_assets@xbx']
    df['研发费用占比'] = df['R_rad_cost_sum@xbx_ttm'] / df['总市值']
    # extra_agg_dict['利润率'] = 'last'
    # extra_agg_dict['流动比率'] = 'last'
    extra_agg_dict['ROE'] = 'last'
    extra_agg_dict['负债率'] = 'last'
    extra_agg_dict['研发费用占比'] = 'last'
    return df
# !!!
